package com.arong.swing.util;

import java.io.File;
import java.io.IOException;

import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Expand;
import org.apache.tools.ant.taskdefs.Zip;
import org.apache.tools.ant.types.FileSet;

public class ZipCompressorByAnt {
	public final static String encoding = "UTF-8"; 
	/** 
     * 1.可以压缩目录(支持多级)<br> 
     * 2.可以压缩文件<br> 
     * 3.如果压缩文件的路径或父路径不存在, 将会自动创建<br> 
     *  
     * @param src 
     *            将要进行压缩的目录 
     * @param zip 
     *            最终生成的压缩文件的路径 
     */  
    public static void zip(File src, File dest) throws IOException {  
        Project prj = new Project();  
        Zip zip = new Zip();  
        zip.setProject(prj);  
        zip.setDestFile(dest);  
        FileSet fileSet = new FileSet();  
        fileSet.setProject(prj);  
        if (src.isFile()) {  
            fileSet.setFile(src);  
        } else {  
            fileSet.setDir(src);  
        }  
        zip.addFileset(fileSet);  
        zip.setEncoding(encoding);
        zip.execute(); 
    }  
  
    /** 
     * 将指定的压缩文件解压到指定的目标目录下. 如果指定的目标目录不存在或其父路径不存在, 将会自动创建. 
     *  
     * @param zip 
     *            将会解压的压缩文件 
     * @param dest 
     *            解压操作的目录目录 
     */  
    public static void unzip(File src, File dest) throws IOException {  
        Project proj = new Project();  
        Expand expand = new Expand();  
        expand.setProject(proj); 
        expand.setSrc(src);  
        expand.setDest(dest);  
        expand.setEncoding(encoding);//设置编码不能少，少了文件名会有乱码  
        expand.execute();  
    } 
    public static void deleteAllFiles(File path) {
		if (!path.exists()){
			return;
		}
		if (path.isFile()) {
			path.delete();
			return;
		}
		File[] files = path.listFiles();
		for (int i = 0; i < files.length; i++) {
			deleteAllFiles(files[i]);
		}
		path.delete();
	}
    
    public static void main(String[] args) throws IOException {
    	ZipCompressorByAnt.zip(new File("E:\\temp\\SwingCK_new"),new File("E:\\temp\\SwingCK.zip"));
    	//ZipCompressorByAnt.unzip(new File("E:\\anrong\\temp\\java.zip"),new File("E:\\anrong\\temp\\java2"));
    	
    	//ZipCompressorByAnt.unzip(new File("E:\\temp\\tmp\\wholePackage.zip"),new File("E:\\temp\\tmp\\package"));
	}

}
